Projet Zuul de conception orientée objet en Java d'un jeu d'aventure
Forum des exercices du projet Zuul
Exercice 7.20
- Lire la suite du chapitre 7 [ci-joint] (si possible en anglais, sinon en français).
Cet exercice doit être compris, terminé et fonctionnel avant de commencer l'exercice 7.22 (qui lui, vous permettra d'ajouter plusieurs items dans une même pièce). - Extend your adventure project so that a Room can contain a single Item.
Items have a description and a weight, so maybe the getters could be useful ?
When creating Rooms and setting their exits, Items for this game should also be created and an Item should be set into some Rooms (create a method setItem to do that !).
Please note that we don't want an Item in every Room, so we don't want any additional parameter for Room's constructor.
When a player enters a Room, information about an Item present in this Room should be displayed, or "No item here.".
Aide : De même que getExitString décrit les sorties d'une Room, getItemString décrira l'(es) item(s) d'une Room, et la description longue devra évidemment en tenir compte.
Remarque : Il est possible de remplacer le poids de chaque Item par un prix, ou même de prévoir les deux !
Attention ! Une classe représentant un item ne peut pas s'appeler Items (et ne peut pas contenir plusieurs items) !
Bonjour,
je voulais savoir ce qu'était la définition du mot "Champs" dans le fichier pdf joins a cette page.
Je vous remercie.
Si vous aviez lu la version en anglais, vous auriez trouvé la signification dans le glossaire anglais/français (qui hélas n'existe plus).
Pour ceux qui lisent la version en français, j'ai ajouté une entrée dans le glossaire du vocabulaire objet (qui hélas n'existe plus).
champ se traduit par field qui en POO est équivalent à attribut.
Un étudiant a écrit :
Il s'agit bien ici de créer une classe item avec les getters et setters ?
Oui, mais je ne pense pas que vous aurez besoin des setters, car on ne modifie généralement pas un Item.
Un étudiant a écrit :
Devons-nous faire comme pour le tp 7.1 avec un
inventaire Joueur (list, Arraylist) et un inventaire "Room" ( hashmap
contenant tout les item et leur Room ) ?
Surtout pas !
Cet exercice consiste uniquement à permettre de stocker UN Item dans n'importe quelle Room.
En stocker plusieurs sera l'objet de l'exercice 7.22.
Quant à permettre au joueur de les ramasser, cela n'arrivera qu'aux exercices 7.30+7.31.
Un étudiant a écrit :
Je suis actuellement en train de finir les
exercices de la pers4.
Dans l’exercice 7.20 et 7.21, il est expliqué que
nous devons rajouter des « items .
Si j’ai bien compris il s’agit
d’objets, qui peuvent être par exemple, un « râteau ».
Vous nous
demandez de les ajouter à notre jeu.
- Pour effectuer cette tâche, j’ai pensé créer une classe « Items » qui permettrait de créer les objets et de les initialiser. Elle serait également composée d’accesseur et de modificateur.
- Une fois cela effectué, je pensais incorporer chaque item dans les salles leur correspondant, en ajoutant au constructeur de la class Room un troisième paramètre de type « Items ».
- Enfin je n’aurais plus qu’à ajouter les descriptions de mes objets dans GameEgine (au même endroit que mes salles =>exemple vAthenes = new Room("à Athènes en 496 av J-C","Images/vAthenes.jpg", « rateau ») ) .
Suis-je dans le bon raisonnement ? Et si oui, manque-t-il quelque chose ?
* Vous avez bien compris ce qu'il faut faire, mais ce ne sont pas forcément les meilleures solutions pour y arriver..
- Relisez mieux la fin de l'énoncé de cet exercice pour comprendre pourquoi la classe ne doit pas s'appeler Items.
OK pour les accesseurs, mais il est peu probable que vous ayez besoin de modificateurs. - L'inconvénient de votre solution est que l'on ne souhaite pas forcément mettre un Item dans chaque Room.
Il vaut mieux prévoir une méthode setItem dans Room qu'on appellera lorsqu'on voudra mettre un Item dans une Room. - Après les new Room, il faudra mettre les new Item puis les setItem
Un étudiant a écrit :
Hélas non.
(vous avez bien fait de demander)
Vous vous êtes bcp éloigné de l'énoncé ; est-ce un pb de compréhension de l'anglais ?
Reprenons l'énoncé :
-
Extend your adventure project so that a Room can contain a single Item.
Cela veut donc dire qu'il faut ajouter un attribut de type Item dans la classe Room ; comme ça, pour pourra stocker un Item dans chaque objet Room. Pourquoi ajouter une nouvelle HashMap dans Room ? -
Items have a description and a weight.
ça vous l'avez compris, si ce n'est qu'on ne voit pas pourquoi on irait modifier le nom ou le poids d'un Item ... - When creating Rooms and setting their exits, Items for this game should also be created.
Donc, il faudra créer des Items dans createRooms et en mettre dans certaines pièces selon votre scénario. -
When a player enters a Room, information about an Item present in this Room should be displayed.
Donc, il faudra compléter getLongDescription dans Room pour qu'elle affiche la description de l'Item s'il y en a un.
Par ailleurs :
- Prévoir un paramètre Room dans la procédure setItem qui est une méthode de Room n'est pas une bonne idée puisque l'objet courant sera déjà la Room dans laquelle on veut ajouter cet Item.
- Je ne suis pas sûr que vous ayez compris le principe de la HashMap qui stocke des associations (clé,valeur) : on associe à une clé (pratique) un objet qu'on veut pouvoir retrouver facilement.
Un étudiant a écrit :
j'aimerais savoir si la classe Item qu'on doit implémenter dans le jeu
doit être la même que celle qu'on a créé lors du TP6, en utilisant des
types objets plutôt que les types primitifs, et s'il fallait redéfinir
compareTo() et toString()?
> j'aimerais savoir si la classe Item qu'on doit implémenter dans
le jeu doit être la même que celle qu'on a créé lors du TP6,
>
non, puisque dans le projet, on vous demande un poids et non un prix
> en utilisant des types objets plutôt que les types primitifs,
>
la classe Item du TP6 utilise bien un type primitif pour le prix ...
> et s'il fallait redéfinir compareTo()
>
pas pour l'instant ; vous verrez si vous avez besoin de comparer des Items ...
> et toString() ?
>
il y a de grandes chances que vous ayez besoin d'une représentation sous forme de
String d'un Item !
Réseaux sociaux